package com.ruoyi.system.xmlAbstract.interfaces.paramInterfaces;


import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.system.xmlAbstract.XmlGenerateAbstract;
import com.ruoyi.system.xmlAbstract.dto.XmlNodeBuildDto;

import java.util.Map;

/**
 * 自动装配 参数到 xml中
 * @author : anxinr
 * @date : 2023/1/30 10:44
 */
public interface XmlAutoFillParamInterface {

    /**
     * 填充参数
     * @param data
     * @param xmlBuild
     * @return boolean
     * @throws Exception
     */
    boolean fillParam(XmlGenerateAbstract xmlBuild, Object data);

    /**
     * 可采用默认的方法，通过  Map 填充参数
     * @param xmlBuild
     * @param data
     * @throws Exception
     *
     */
    default void defaultFillParam(XmlNodeBuildDto xmlBuild, Map<String, String> data){
        /**如果当前结点没有子节点 ，则 填充数据*/
        if (CollectionUtil.isEmpty(xmlBuild.getList())){
            /**如果获取的数据不为空*/
            Object node = data.get(xmlBuild.getXmlNode());
            if (ObjectUtil.isNotEmpty(node)){
                /**填充数据*/
                xmlBuild.setXmlNodeData(node.toString());
            }
        }else {
            /**如果有子节点，则递归填充数据*/
            for (XmlNodeBuildDto xmlNodeBuildDto : xmlBuild.getList()) {
                defaultFillParam(xmlNodeBuildDto,data);
            }
        }
    }
}
